# Необходимо ввести целое N, затем N целых чисел. Вывести эти числа, пропуская уже выведенные, если встретятся повторы. 
# ps (стеком пользоваться запрещается :) )
#
# in:	8
#	12
#	34
#	-12
#	23
#	12
#	-12
#	56
#	9
#
# out: 	12
#	34
#	-12
#	23
#	56
#	9

.data
array:

.text
	
	la s0 array 		# адрес начала данных
	la t0 array		# адрес доступный для записи следующего числа
	li a7 5			# системный вызов считывания целого числа
	ecall
	mv s1 a0 		# количество чисел для ввода
loop:
	bge  zero s1 out_num	# если количество чисел уже меньше или равно нулю, переходим на вывод
	ecall
	addi s1 s1 -1		# уменьшаем счетчик
	la t1 array		# адрес очередного проверяемого числа
loop_check:
	beq t1 t0 record_word
	lw t3 (t1)
	beq t3 a0 loop		# если числа равны переход на ввод следующего
	addi t1 t1 4
	j loop_check
	
record_word:
	sw a0 (t0)		# добавляем очередное число
	addi t0 t0 4		# передвигаем на следующий свободный адрес
	j loop
	
out_num:
	la t1 array		# указатель на начало массива
loop_out:
	bgeu t1 t0 end		# если указатель на свободное место достиг начала завершаем программу
	li a7 1			# будем выводить на печать число
	lw a0 (t1)		# считываем слово по адресу указателя
	ecall
	li      a7 11           # Выведем перевод строки
	li      a0 10
	ecall
	addi t1 t1 4		# сдвигаем указатель на слово
	j loop_out
	
end:	
	li a7 10		# останов
	ecall	
	
